#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=305;
struct Eric_cai
{
    int to,next,fl;
    ll cost;
};
Eric_cai EC[maxn*maxn*5];
int head[maxn*10],cnt=1;
void add(int u,int v,int fl,ll cost)
{
    EC[++cnt]=(Eric_cai){v,head[u],fl,cost};
    head[u]=cnt;
}
void adde(int u,int v,int fl,ll cost)
{
    //cerr<<u<<' '<<v<<' '<<fl<<' '<<cost<<'\n';
    add(u,v,fl,cost);
    add(v,u,0,-cost);
}
int n,m,q,s,t;
ll dis[maxn][maxn];
ll ans[maxn],d[maxn*10],sum[maxn];
int inq[maxn*10],fr[maxn*10],e[maxn*10];
ll spfa()
{
    queue<int> q;
    for(int i=1;i<=2*n+2;i++) d[i]=1e9,e[i]=fr[i]=inq[i]=0;
    d[s]=0;q.push(s),inq[s]=1;
    int now;
    while(!q.empty())
    {
        now=q.front();
        q.pop(),inq[now]=0;
        for(int i=head[now];i!=0;i=EC[i].next)
        {
            if(d[EC[i].to]>d[now]+EC[i].cost && EC[i].fl!=0)
            {
                d[EC[i].to]=d[now]+EC[i].cost,e[EC[i].to]=i,fr[EC[i].to]=now;
                if(inq[EC[i].to]==0) q.push(EC[i].to),inq[EC[i].to]=1;
            }
        }
        //cerr<<now<<endl;
    }
    return d[t];
}
int main()
{
    //cerr<<1.0*(sizeof(EC)+sizeof(dis))/1024/1024<<endl;
    int u,v,pos,now;
    ll w,C;
    freopen("journey.in","r",stdin);
    freopen("journey.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m>>q;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++) dis[i][j]=1e9;
    for(int i=1;i<=m;i++)
    {
        cin>>u>>v>>w;
        dis[u][v]=w;
    }
    for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
    s=2*n+1,t=2*n+2;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++) if(dis[i][j]<=1e8) adde(i,n+j,1,dis[i][j]);
    for(int i=1;i<=n;i++) adde(s,i,1,0),adde(i+n,t,1,0);
    for(int i=1;i<=n;i++)
    {
        ans[i]=spfa();
        if(ans[i]>=1e8) continue;
        now=t;
        while(now!=s)
        {
            EC[e[now]].fl--,EC[e[now]^1].fl++;
            now=fr[now];
        }
    }
    for(int i=1;i<=n;i++) sum[i]=sum[i-1]+ans[i];
    for(int i=1;i<=q;i++)
    {
        cin>>C;
        pos=lower_bound(ans+1,ans+1+n,C)-ans-1;
        cout<<sum[pos]+(n-pos)*C<<'\n';
    }
    return 0;
}
